home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / athena / moira / patch3 < prev    next >
Encoding:
Text File  |  1990-09-04  |  29.9 KB  |  980 lines

  1. This is patch #3 to Moira release 2.2, of Wed Jul 25 11:49:01 EDT 1990
  2. (revised Wed Sep  5 16:31:30 EDT 1990)
  3.  
  4. BE SURE TO APPLY THIS PATCH WITH
  5.  
  6.    patch -p
  7.  
  8. TO PRESERVE THE DIRECTORY HIERARCHY.
  9.  
  10. The following bugs are fixed:
  11.  
  12. 1. Update patchlevel.h to indicate we are at patchlevel 3.
  13. 2. Have the moira client double-check that the real name of a user
  14.    being added follows the capitalization rules, and warn if not.
  15. 3. Problems dereferencing NULL in several places.
  16. 4. The reg_svr sometimes dumped core do to a botched malloc because of
  17.    problems in the glue library.
  18. 5. Sometimes after a server error, all subsequent operations fail with
  19.    the same error.
  20. 6. Accidentally installed the gdb lint library as lsmsgdb instead of
  21.    lmrgdb.
  22. 7. Make sure that FixCase() uppercases starting letters in names.
  23. 8. update_server shouldn't mask of SIGCHILD in it's children processes.
  24. 9. moira.h should declare the function mr_motd().
  25. 10.Gramatical error in Cluster Data menu of moira client.
  26. 11.In moira client, refresh screen before starting a query with the
  27.    server.
  28. 12.Fix bug in reordering of filesystems in fsgroups with the moira client.
  29. 13.Attempting to set a user's pobox to a foreign address with the
  30.    moira client would delete that pobox.
  31.  
  32.  
  33.  
  34. *** /tmp/,RCSt1019079    Thu Jun  7 15:59:41 1990
  35. --- patchlevel.h    Thu Jun  7 15:56:33 1990
  36. ***************
  37. *** 1 ****
  38. ! #define PATCHLEVEL 2
  39. --- 1 ----
  40. ! #define PATCHLEVEL 3
  41. *** /tmp/user.c    Wed Sep  5 15:53:55 1990
  42. --- clients/moira/user.c    Wed Sep  5 15:55:51 1990
  43. ***************
  44. *** 1,5 ****
  45.   #if (!defined(lint) && !defined(SABER))
  46. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v 1.18 90/03/17 17:11:25 mar Exp $";
  47.   #endif lint
  48.   
  49.   /*    This is the file user.c for the MOIRA Client, which allows a nieve
  50. --- 1,5 ----
  51.   #if (!defined(lint) && !defined(SABER))
  52. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v 1.20 90/05/02 15:47:21 mar Exp $";
  53.   #endif lint
  54.   
  55.   /*    This is the file user.c for the MOIRA Client, which allows a nieve
  56. ***************
  57. *** 11,17 ****
  58.    *
  59.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v $
  60.    *      $Author: mar $
  61. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v 1.18 90/03/17 17:11:25 mar Exp $
  62.    *    
  63.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  64.    *
  65. --- 11,17 ----
  66.    *
  67.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v $
  68.    *      $Author: mar $
  69. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/user.c,v 1.20 90/05/02 15:47:21 mar Exp $
  70.    *    
  71.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  72.    *
  73. ***************
  74. *** 133,138 ****
  75. --- 133,161 ----
  76.       return(info);
  77.   }
  78.   
  79. + /* Check that the supplied name follows the capitalization rules, and 
  80. +  * offer to correct it if not.
  81. +  */
  82. + CorrectCapitalization(name)
  83. + char **name;
  84. + {
  85. +     char temp_buf[BUFSIZ], fixname[BUFSIZ];
  86. +     strcpy(fixname, *name);
  87. +     FixCase(fixname);
  88. +     if (strcmp(fixname, *name)) {
  89. +     Put_message("You entered a name which does not follow the capitalization conventions.");
  90. +     sprintf(temp_buf, "Correct it to \"%s\"", fixname);
  91. +     if (YesNoQuestion(temp_buf, 1)) {
  92. +         free(*name);
  93. +         *name = strsave(fixname);
  94. +     }
  95. +     }
  96. + }
  97.   /*    Function Name: AskUserInfo.
  98.    *    Description: This function askes the user for information about a 
  99.    *                   machine and saves it into a structure.
  100. ***************
  101. *** 148,154 ****
  102.   char ** info;
  103.   Bool name;
  104.   {
  105. !     char temp_buf[BUFSIZ], *newname, *temp_ptr;
  106.   
  107.       if (name) {
  108.       sprintf(temp_buf,"\nChanging Attributes of user %s.\n",info[U_NAME]);
  109. --- 171,177 ----
  110.   char ** info;
  111.   Bool name;
  112.   {
  113. !     char temp_buf[BUFSIZ], fixname[BUFSIZ], *newname, *temp_ptr;
  114.   
  115.       if (name) {
  116.       sprintf(temp_buf,"\nChanging Attributes of user %s.\n",info[U_NAME]);
  117. ***************
  118. *** 158,165 ****
  119. --- 181,191 ----
  120.       char *argv[3];
  121.   
  122.       GetValueFromUser("User's last name", &info[U_LAST]);
  123. +     CorrectCapitalization(&info[U_LAST]);
  124.       GetValueFromUser("User's first name", &info[U_FIRST]);
  125. +     CorrectCapitalization(&info[U_FIRST]);
  126.       GetValueFromUser("User's middle name", &info[U_MIDDLE]);
  127. +     CorrectCapitalization(&info[U_MIDDLE]);
  128.       argv[0] = info[U_FIRST];
  129.       argv[1] = info[U_LAST];
  130.       if (do_mr_query("get_user_by_name", 2, argv,
  131. ***************
  132. *** 183,190 ****
  133. --- 209,219 ----
  134.       GetValueFromUser("User's shell", &info[U_SHELL]);
  135.       if (name) {
  136.       GetValueFromUser("User's last name", &info[U_LAST]);
  137. +     CorrectCapitalization(&info[U_LAST]);
  138.       GetValueFromUser("User's first name", &info[U_FIRST]);
  139. +     CorrectCapitalization(&info[U_FIRST]);
  140.       GetValueFromUser("User's middle name", &info[U_MIDDLE]);
  141. +     CorrectCapitalization(&info[U_MIDDLE]);
  142.       }
  143.       while (1) {
  144.       int i;
  145. ***************
  146. *** 372,377 ****
  147. --- 401,408 ----
  148.       
  149.       Prompt_input("First Name: ", first, BUFSIZ);
  150.       Prompt_input("Last  Name: ", last, BUFSIZ);
  151. +     FixCase(first);
  152. +     FixCase(last);
  153.   
  154.       args[0] = first;
  155.       args[1] = last;
  156. *** /tmp/,RCSt1019116    Thu Jun  7 16:07:22 1990
  157. --- dcm/dcm.c    Thu May 31 14:29:45 1990
  158. ***************
  159. *** 7,17 ****
  160.    *
  161.    * $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v $
  162.    * $Author: mar $
  163. !  * $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v 1.14 90/04/09 18:41:45 mar Exp $
  164.    */
  165.   
  166.   #ifndef lint
  167. ! static char rcsid_dcm_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v 1.14 90/04/09 18:41:45 mar Exp $";
  168.   #endif lint
  169.   
  170.   #include <stdio.h>
  171. --- 7,17 ----
  172.    *
  173.    * $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v $
  174.    * $Author: mar $
  175. !  * $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v 1.15 90/05/31 14:29:27 mar Exp $
  176.    */
  177.   
  178.   #ifndef lint
  179. ! static char rcsid_dcm_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/dcm/RCS/dcm.c,v 1.15 90/05/31 14:29:27 mar Exp $";
  180.   #endif lint
  181.   
  182.   #include <stdio.h>
  183. ***************
  184. *** 46,55 ****
  185.       int i;
  186.       char **arg = argv;
  187.       char *qargv[3];
  188.       int status;
  189.   
  190.       whoami = argv[0];
  191. !     dbg = atoi(getenv("DEBUG"));
  192.       umask(UMASK);
  193.       log_flags = 0;
  194.       setlinebuf(stderr);
  195. --- 46,57 ----
  196.       int i;
  197.       char **arg = argv;
  198.       char *qargv[3];
  199. +     char *s;
  200.       int status;
  201.   
  202.       whoami = argv[0];
  203. !     s = getenv("DEBUG");
  204. !     dbg = s ? atoi(s) : 0;
  205.       umask(UMASK);
  206.       log_flags = 0;
  207.       setlinebuf(stderr);
  208. *** /tmp/,RCSt1017662    Wed Jun 13 15:20:27 1990
  209. --- server/mr_util.c    Thu Jun  7 17:52:16 1990
  210. ***************
  211. *** 1,7 ****
  212.   /*
  213.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v $
  214.    *    $Author: mar $
  215. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v 1.16 90/03/19 15:42:24 mar Exp $
  216.    *
  217.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  218.    *    For copying and distribution information, please see the file
  219. --- 1,7 ----
  220.   /*
  221.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v $
  222.    *    $Author: mar $
  223. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v 1.17 90/06/07 17:52:10 mar Exp $
  224.    *
  225.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  226.    *    For copying and distribution information, please see the file
  227. ***************
  228. *** 9,15 ****
  229.    */
  230.   
  231.   #ifndef lint
  232. ! static char *rcsid_mr_util_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v 1.16 90/03/19 15:42:24 mar Exp $";
  233.   #endif lint
  234.   
  235.   #include <mit-copyright.h>
  236. --- 9,15 ----
  237.    */
  238.   
  239.   #ifndef lint
  240. ! static char *rcsid_mr_util_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_util.c,v 1.17 90/06/07 17:52:10 mar Exp $";
  241.   #endif lint
  242.   
  243.   #include <mit-copyright.h>
  244. ***************
  245. *** 121,124 ****
  246. --- 121,142 ----
  247.       }
  248.       }
  249.       return(0);
  250. + }
  251. + /* returns a copy of the argv and all of it's strings */
  252. + char **mr_copy_args(argv, argc)
  253. + char **argv;
  254. + int argc;
  255. + {
  256. +     char **a;
  257. +     int i;
  258. +     a = (char **) malloc(argc * sizeof(char *));
  259. +     if (a == 0)
  260. +       return(a);
  261. +     for (i = 0; i < argc; i++)
  262. +       a[i] = strsave(argv[i]);
  263. +     return(a);
  264.   }
  265. *** /tmp/mr_glue.c    Wed Sep  5 15:58:56 1990
  266. --- server/mr_glue.c    Wed Sep  5 16:02:27 1990
  267. ***************
  268. *** 1,7 ****
  269.   /*
  270.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v $
  271.    *    $Author: mar $
  272. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v 1.14 90/03/19 15:41:41 mar Exp $
  273.    *
  274.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  275.    *    For copying and distribution information, please see the file
  276. --- 1,7 ----
  277.   /*
  278.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v $
  279.    *    $Author: mar $
  280. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v 1.17 90/06/07 17:51:37 mar Exp $
  281.    *
  282.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  283.    *    For copying and distribution information, please see the file
  284. ***************
  285. *** 12,18 ****
  286.    */
  287.   
  288.   #ifndef lint
  289. ! static char *rcsid_mr_glue_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v 1.14 90/03/19 15:41:41 mar Exp $";
  290.   #endif lint
  291.   
  292.   #include <mit-copyright.h>
  293. --- 12,18 ----
  294.    */
  295.   
  296.   #ifndef lint
  297. ! static char *rcsid_mr_glue_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_glue.c,v 1.17 90/06/07 17:51:37 mar Exp $";
  298.   #endif lint
  299.   
  300.   #include <mit-copyright.h>
  301. ***************
  302. *** 129,136 ****
  303.       time(&now);
  304.       hints.proc = callproc;
  305.       hints.hint = callarg;
  306. !     return mr_process_query(&pseudo_client, name, argc, argv,
  307. !                  callback, &hints);
  308.   }
  309.   
  310.   int mr_access(name, argc, argv)
  311. --- 129,136 ----
  312.       time(&now);
  313.       hints.proc = callproc;
  314.       hints.hint = callarg;
  315. !     return mr_process_query(&pseudo_client, name, argc,
  316. !                 mr_copy_args(argv, argc), callback, &hints);
  317.   }
  318.   
  319.   int mr_access(name, argc, argv)
  320. ***************
  321. *** 139,145 ****
  322.       char **argv;        /* Args */
  323.   {
  324.       time(&now);
  325. !     return mr_check_access(&pseudo_client, name, argc, argv);
  326.   }
  327.   
  328.   int mr_query_internal(argc, argv, callproc, callarg)
  329. --- 139,146 ----
  330.       char **argv;        /* Args */
  331.   {
  332.       time(&now);
  333. !     return mr_check_access(&pseudo_client, name, argc,
  334. !                mr_copy_args(argv, argc));
  335.   }
  336.   
  337.   int mr_query_internal(argc, argv, callproc, callarg)
  338. ***************
  339. *** 153,160 ****
  340.       time(&now);
  341.       hints.proc = callproc;
  342.       hints.hint = callarg;
  343. !     return mr_process_query(&pseudo_client, argv[0], argc-1, argv+1,
  344. !                  callback, &hints);
  345.   }
  346.   
  347.   int mr_access_internal(argc, argv)
  348. --- 154,161 ----
  349.       time(&now);
  350.       hints.proc = callproc;
  351.       hints.hint = callarg;
  352. !     return mr_process_query(&pseudo_client, argv[0], argc-1,
  353. !                 mr_copy_args(argv+1, argc-1), callback, &hints);
  354.   }
  355.   
  356.   int mr_access_internal(argc, argv)
  357. ***************
  358. *** 162,168 ****
  359.       char **argv;
  360.   {
  361.       time(&now);
  362. !     return mr_check_access(&pseudo_client, argv[0], argc-1, argv+1);
  363.   }
  364.   
  365.   mr_shutdown(why)
  366. --- 163,170 ----
  367.       char **argv;
  368.   {
  369.       time(&now);
  370. !     return mr_check_access(&pseudo_client, argv[0], argc-1,
  371. !                mr_copy_args(argv+1, argc-1));
  372.   }
  373.   
  374.   mr_shutdown(why)
  375. *** /tmp/,RCSt1017676    Wed Jun 13 15:22:14 1990
  376. --- server/mr_scall.c    Fri Jun  1 18:46:52 1990
  377. ***************
  378. *** 1,7 ****
  379.   /*
  380.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v $
  381.    *    $Author: mar $
  382. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v 1.19 90/03/19 15:42:05 mar Exp $
  383.    *
  384.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  385.    *    For copying and distribution information, please see the file
  386. --- 1,7 ----
  387.   /*
  388.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v $
  389.    *    $Author: mar $
  390. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v 1.20 90/06/01 18:46:36 mar Exp $
  391.    *
  392.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  393.    *    For copying and distribution information, please see the file
  394. ***************
  395. *** 10,16 ****
  396.    */
  397.   
  398.   #ifndef lint
  399. ! static char *rcsid_sms_scall_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v 1.19 90/03/19 15:42:05 mar Exp $";
  400.   #endif lint
  401.   
  402.   #include <mit-copyright.h>
  403. --- 10,16 ----
  404.    */
  405.   
  406.   #ifndef lint
  407. ! static char *rcsid_sms_scall_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/server/RCS/mr_scall.c,v 1.20 90/06/01 18:46:36 mar Exp $";
  408.   #endif lint
  409.   
  410.   #include <mit-copyright.h>
  411. ***************
  412. *** 95,100 ****
  413. --- 95,101 ----
  414.       client *cl;
  415.   {
  416.       int pn;
  417. +     extern int ingres_errno;
  418.       cl->reply.mr_argc = 0;
  419.       cl->reply.mr_status = 0;
  420.       cl->reply.mr_version_no = cl->args->mr_version_no;
  421. ***************
  422. *** 117,122 ****
  423. --- 118,126 ----
  424.             com_err(whoami, MR_DOWN, "(query refused)");
  425.           return;
  426.       }
  427. +     /* make sure this gets cleared before every operation */
  428. +     ingres_errno = 0;
  429.   
  430.       switch(pn) {
  431.       case MR_NOOP:
  432. *** /tmp/Makefile    Wed Sep  5 16:05:22 1990
  433. --- gdb/Makefile    Wed Sep  5 16:06:28 1990
  434. ***************
  435. *** 1,7 ****
  436.   #
  437.   #     $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/gdb/RCS/Makefile,v $
  438.   #    $Author: mar $
  439. ! #    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/gdb/RCS/Makefile,v 1.11 90/03/17 00:01:13 mar Exp $
  440.   #
  441.   # Revised makefile for GDB library.
  442.   #
  443. --- 1,7 ----
  444.   #
  445.   #     $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/gdb/RCS/Makefile,v $
  446.   #    $Author: mar $
  447. ! #    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/gdb/RCS/Makefile,v 1.13 90/05/02 18:45:11 mar Exp $
  448.   #
  449.   # Revised makefile for GDB library.
  450.   #
  451. ***************
  452. *** 57,65 ****
  453.   install:
  454.       install -c -m 644 libgdb.a ${DESTDIR}/usr/athena/lib/libsmsgdb.a
  455.       ranlib ${DESTDIR}/usr/athena/lib/libsmsgdb.a
  456. !     install -c -m 644 libgdb_p.a ${DESTDIR}/usr/athena/lib/libsmsgdb_p.a
  457. !     ranlib ${DESTDIR}/usr/athena/lib/libsmsgdb_p.a
  458. !     install -c -m 644 llib-lgdb.ln ${DESTDIR}/usr/lib/lint/llib-lsmsgdb.ln
  459.   
  460.   #
  461.   # Random demo programs
  462. --- 57,65 ----
  463.   install:
  464.       install -c -m 644 libgdb.a ${DESTDIR}/usr/athena/lib/libsmsgdb.a
  465.       ranlib ${DESTDIR}/usr/athena/lib/libsmsgdb.a
  466. ! #    install -c -m 644 libgdb_p.a ${DESTDIR}/usr/athena/lib/libmrgdb_p.a
  467. ! #    ranlib ${DESTDIR}/usr/athena/lib/libmrgdb_p.a
  468. !     install -c -m 644 llib-lgdb.ln ${DESTDIR}/usr/lib/lint/llib-lmrgdb.ln
  469.   
  470.   #
  471.   # Random demo programs
  472. *** /tmp/fixname.c    Wed Sep  5 16:08:03 1990
  473. --- rpc/fixname.c    Wed Sep  5 16:10:22 1990
  474. ***************
  475. *** 1,7 ****
  476.   /*
  477.    *    $Source: /mit/smsdev/rpc/RCS/fixname.c,v $
  478.    *    $Author: mar $
  479. !  *    $Header: fixname.c,v 1.3 88/09/13 15:51:13 mar Exp $
  480.    *
  481.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  482.    *    For copying and distribution information, please see the file
  483. --- 1,7 ----
  484.   /*
  485.    *    $Source: /mit/smsdev/rpc/RCS/fixname.c,v $
  486.    *    $Author: mar $
  487. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/rpc/RCS/fixname.c,v 1.4 90/05/02 15:52:10 mar Exp $
  488.    *
  489.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  490.    *    For copying and distribution information, please see the file
  491. ***************
  492. *** 9,15 ****
  493.    */
  494.   
  495.   #ifndef lint
  496. ! static char *rcsid_fixname_c = "$Header: fixname.c,v 1.3 88/09/13 15:51:13 mar Exp $";
  497.   #endif lint
  498.   
  499.   #include <mit-copyright.h>
  500. --- 9,15 ----
  501.    */
  502.   
  503.   #ifndef lint
  504. ! static char *rcsid_fixname_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/rpc/RCS/fixname.c,v 1.4 90/05/02 15:52:10 mar Exp $";
  505.   #endif lint
  506.   
  507.   #include <mit-copyright.h>
  508. ***************
  509. *** 51,74 ****
  510.   #endif notdef
  511.       strncpy(first, ifnm, FIRST_LEN);
  512.   }
  513. ! #ifdef notdef
  514. ! AppendJrOrIII(nm, phas_jr, phas_iii, phas_iv)
  515. ! register char *nm;
  516. ! register int *phas_jr;
  517. ! register int *phas_iii;
  518. ! register int *phas_iv;
  519. ! {
  520. !     if (*phas_jr) {
  521. !     strcat(nm, ", Jr.");
  522. !     }
  523. !     else if (*phas_iii) {
  524. !     strcat(nm, " III");
  525. !     }
  526. !     else if (*phas_iv) {
  527. !     strcat(nm, " IV");
  528. !     }
  529. ! }
  530. ! #endif notdef
  531.   FixCase(p)
  532.   register char *p;
  533.   {
  534. --- 51,57 ----
  535.   #endif notdef
  536.       strncpy(first, ifnm, FIRST_LEN);
  537.   }
  538.   FixCase(p)
  539.   register char *p;
  540.   {
  541. ***************
  542. *** 76,90 ****
  543.               /* a space or punctuation mark (e.g., '-') */
  544.   
  545.       for (cflag = 0; *p; p++) {
  546. !     if (cflag && isupper(*p)) {
  547. !         *p = tolower(*p);
  548. !     }
  549. !     else if (isspace(*p) || ispunct(*p)) {
  550. !         cflag = 0;
  551. !     }
  552. !     else {
  553. !         cflag = 1;
  554. !     }
  555.       }
  556.   }
  557.   
  558. --- 59,72 ----
  559.               /* a space or punctuation mark (e.g., '-') */
  560.   
  561.       for (cflag = 0; *p; p++) {
  562. !     if (cflag && isupper(*p))
  563. !       *p = tolower(*p);
  564. !     else if (!cflag && islower(*p))
  565. !       *p = toupper(*p);
  566. !     if (isalpha(*p))
  567. !       cflag = 1;
  568. !     else
  569. !       cflag = 0;
  570.       }
  571.   }
  572.   
  573. *** /tmp/,RCSt1017735    Wed Jun 13 15:31:34 1990
  574. --- update/exec_002.c    Fri Jun  8 10:53:20 1990
  575. ***************
  576. *** 1,6 ****
  577.   /*
  578.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v $
  579. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v 1.7 90/03/19 13:02:19 mar Exp $
  580.    */
  581.   /*  (c) Copyright 1988 by the Massachusetts Institute of Technology. */
  582.   /*  For copying and distribution information, please see the file */
  583. --- 1,6 ----
  584.   /*
  585.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v $
  586. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v 1.8 90/06/08 10:53:02 mar Exp $
  587.    */
  588.   /*  (c) Copyright 1988 by the Massachusetts Institute of Technology. */
  589.   /*  For copying and distribution information, please see the file */
  590. ***************
  591. *** 7,13 ****
  592.   /*  <mit-copyright.h>. */
  593.   
  594.   #ifndef lint
  595. ! static char *rcsid_exec_002_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v 1.7 90/03/19 13:02:19 mar Exp $";
  596.   #endif    lint
  597.   
  598.   #include <mit-copyright.h>
  599. --- 7,13 ----
  600.   /*  <mit-copyright.h>. */
  601.   
  602.   #ifndef lint
  603. ! static char *rcsid_exec_002_c = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/update/RCS/exec_002.c,v 1.8 90/06/08 10:53:02 mar Exp $";
  604.   #endif    lint
  605.   
  606.   #include <mit-copyright.h>
  607. ***************
  608. *** 44,49 ****
  609. --- 44,50 ----
  610.           exit(1);
  611.       return;
  612.       case 0:
  613. +     sigsetmask(mask);
  614.       execlp(str, str, (char *)NULL);
  615.       n = errno;
  616.       sigsetmask(mask);
  617. *** /tmp/moira.h    Wed Sep  5 16:14:08 1990
  618. --- include/moira.h    Wed Sep  5 16:15:07 1990
  619. ***************
  620. *** 1,7 ****
  621.   /*
  622.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/include/RCS/moira.h,v $
  623.    *    $Author: mar $
  624. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/include/RCS/moira.h,v 1.15 90/03/17 16:30:56 mar Exp $
  625.    *
  626.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  627.    *
  628. --- 1,7 ----
  629.   /*
  630.    *    $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/include/RCS/moira.h,v $
  631.    *    $Author: mar $
  632. !  *    $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/include/RCS/moira.h,v 1.17 90/06/13 12:40:57 mar Exp $
  633.    *
  634.    *    Copyright (C) 1987 by the Massachusetts Institute of Technology
  635.    *
  636. ***************
  637. *** 71,76 ****
  638. --- 71,77 ----
  639.   int mr_connect(char *server);
  640.   int mr_disconnect();
  641.   int mr_host(char *host, int size);
  642. + int mr_motd(char **motd);
  643.   int mr_auth(char *prog);
  644.   int mr_access(char *handle, int argc, char **argv);
  645.   int mr_access_internal(int argc, char **argv);
  646. ***************
  647. *** 89,94 ****
  648. --- 90,96 ----
  649.   int mr_connect();
  650.   int mr_disconnect();
  651.   int mr_host();
  652. + int mr_motd();
  653.   int mr_auth();
  654.   int mr_access();
  655.   int mr_query();
  656. *** /tmp/menus.c    Wed Sep  5 16:16:28 1990
  657. --- clients/moira/menus.c    Wed Sep  5 16:17:45 1990
  658. ***************
  659. *** 1,5 ****
  660.   #if (!defined(lint) && !defined(SABER))
  661. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v 1.16 90/03/17 17:10:48 mar Exp $";
  662.   #endif lint
  663.   
  664.   /*    This is the file menus.c for the MOIRA Client, which allows a nieve
  665. --- 1,5 ----
  666.   #if (!defined(lint) && !defined(SABER))
  667. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v 1.18 90/06/13 12:42:07 mar Exp $";
  668.   #endif lint
  669.   
  670.   /*    This is the file menus.c for the MOIRA Client, which allows a nieve
  671. ***************
  672. *** 11,17 ****
  673.    *
  674.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v $
  675.    *      $Author: mar $
  676. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v 1.16 90/03/17 17:10:48 mar Exp $
  677.    *    
  678.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  679.    *
  680. --- 11,17 ----
  681.    *
  682.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v $
  683.    *      $Author: mar $
  684. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menus.c,v 1.18 90/06/13 12:42:07 mar Exp $
  685.    *    
  686.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  687.    *
  688. ***************
  689. *** 52,58 ****
  690.         {"data", "The data to be added: "},
  691.       } },
  692.       { RemoveClusterData, NULLMENU, 3, {
  693. !       {"delete", "Remove Data to a given Cluster"},
  694.         {"clus", "Cluster's Name: "},
  695.         {"label", "Label Identifing the data: "},
  696.       } }, 
  697. --- 52,58 ----
  698.         {"data", "The data to be added: "},
  699.       } },
  700.       { RemoveClusterData, NULLMENU, 3, {
  701. !       {"delete", "Remove Data from a given Cluster"},
  702.         {"clus", "Cluster's Name: "},
  703.         {"label", "Label Identifing the data: "},
  704.       } }, 
  705. *** /tmp/,RCSt1017757    Wed Jun 13 15:36:11 1990
  706. --- clients/moira/menu.c    Tue Jun 12 16:30:02 1990
  707. ***************
  708. *** 5,11 ****
  709.    *
  710.    * $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v $
  711.    * $Author: mar $
  712. !  * $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v 1.28 90/04/09 18:03:56 mar Exp $
  713.    *
  714.    * Generic menu system module.
  715.    *
  716. --- 5,11 ----
  717.    *
  718.    * $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v $
  719.    * $Author: mar $
  720. !  * $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v 1.29 90/06/12 16:29:49 mar Exp $
  721.    *
  722.    * Generic menu system module.
  723.    *
  724. ***************
  725. *** 18,24 ****
  726.    */
  727.   
  728.   #ifndef lint
  729. ! static char rcsid_menu_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v 1.28 90/04/09 18:03:56 mar Exp $";
  730.   
  731.   #endif lint
  732.   
  733. --- 18,24 ----
  734.    */
  735.   
  736.   #ifndef lint
  737. ! static char rcsid_menu_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/menu.c,v 1.29 90/06/12 16:29:49 mar Exp $";
  738.   
  739.   #endif lint
  740.   
  741. ***************
  742. *** 396,401 ****
  743. --- 396,410 ----
  744.       parsed_argc = 0;
  745.       }
  746.   }
  747. + refresh_screen()
  748. + {
  749. +     if (cur_ms != NULLMS) {
  750. +     touchwin(cur_ms->ms_screen);
  751. +     refresh_ms(cur_ms);
  752. +     }
  753. + }
  754.   
  755.   /* Prompt the user for input in the input window of cur_ms */
  756.   int Prompt_input(prompt, buf, buflen)
  757. *** /tmp/,RCSt1017765    Wed Jun 13 15:37:37 1990
  758. --- clients/moira/utils.c    Tue Jun 12 16:30:24 1990
  759. ***************
  760. *** 1,5 ****
  761.   #if (!defined(lint) && !defined(SABER))
  762. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v 1.26 90/05/02 13:13:32 mar Exp $";
  763.   #endif lint
  764.   
  765.   /*    This is the file utils.c for the MOIRA Client, which allows a nieve
  766. --- 1,5 ----
  767.   #if (!defined(lint) && !defined(SABER))
  768. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v 1.27 90/06/12 16:30:08 mar Exp $";
  769.   #endif lint
  770.   
  771.   /*    This is the file utils.c for the MOIRA Client, which allows a nieve
  772. ***************
  773. *** 11,17 ****
  774.    *
  775.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v $
  776.    *      $Author: mar $
  777. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v 1.26 90/05/02 13:13:32 mar Exp $
  778.    *    
  779.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  780.    *
  781. --- 11,17 ----
  782.    *
  783.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v $
  784.    *      $Author: mar $
  785. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/utils.c,v 1.27 90/06/12 16:30:08 mar Exp $
  786.    *    
  787.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  788.    *
  789. ***************
  790. *** 911,916 ****
  791. --- 911,917 ----
  792.       int status;
  793.       extern char *whoami, *moira_server;
  794.   
  795. +     refresh_screen();
  796.       status = mr_query(name, argc, argv, proc, hint);
  797.       if (status != MR_ABORTED && status != MR_NOT_CONNECTED)
  798.         return(status);
  799. *** /tmp/attach.c    Wed Sep  5 16:19:09 1990
  800. --- clients/moira/attach.c    Wed Sep  5 16:23:30 1990
  801. ***************
  802. *** 1,5 ****
  803.   #if (!defined(lint) && !defined(SABER))
  804. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v 1.23 90/04/05 17:35:57 mar Exp $";
  805.   #endif
  806.   
  807.   /*    This is the file attach.c for the MOIRA Client, which allows a nieve
  808. --- 1,5 ----
  809.   #if (!defined(lint) && !defined(SABER))
  810. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v 1.25 90/06/12 16:29:21 mar Exp $";
  811.   #endif
  812.   
  813.   /*    This is the file attach.c for the MOIRA Client, which allows a nieve
  814. ***************
  815. *** 13,19 ****
  816.    *
  817.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v $
  818.    *      $Author: mar $
  819. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v 1.23 90/04/05 17:35:57 mar Exp $
  820.    *    
  821.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  822.    *
  823. --- 13,19 ----
  824.    *
  825.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v $
  826.    *      $Author: mar $
  827. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/attach.c,v 1.25 90/06/12 16:29:21 mar Exp $
  828.    *    
  829.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  830.    *
  831. ***************
  832. *** 661,668 ****
  833.   char **argv;
  834.   int argc;
  835.   {
  836. !     int stat, src, dst;
  837. !     struct qelem *elem = NULL, *top;
  838.       char buf[BUFSIZ], *bufp, *args[3];
  839.   
  840.       if ((stat = do_mr_query("get_fsgroup_members", 1, argv+1, StoreInfo,
  841. --- 661,668 ----
  842.   char **argv;
  843.   int argc;
  844.   {
  845. !     int stat, src, dst, i;
  846. !     struct qelem *elem = NULL, *top, *tmpelem;
  847.       char buf[BUFSIZ], *bufp, *args[3];
  848.   
  849.       if ((stat = do_mr_query("get_fsgroup_members", 1, argv+1, StoreInfo,
  850. ***************
  851. *** 690,709 ****
  852.           Put_message("Aborted.");
  853.           return(DM_NORMAL);
  854.       }
  855. !     for (elem = top; src-- > 1 && elem->q_forw; elem = elem->q_forw);
  856. !     if (src > 1) {
  857.           Put_message("You entered a number that is too high");
  858.           continue;
  859.       }
  860.       break;
  861.       }
  862. !     bufp = Strsave("0");
  863. !     stat = GetValueFromUser("Enter number of filesystem it should follow (0 to make it first):", &bufp);
  864. !     dst = atoi(bufp);
  865. !     free(bufp);
  866. !     if (src == dst || src == dst + 1) {
  867. !     Put_message("That has no effect on the sorting order!");
  868. !     return(DM_NORMAL);
  869.       }
  870.       args[2] = SortAfter(top, dst);
  871.       args[0] = argv[1];
  872. --- 690,723 ----
  873.           Put_message("Aborted.");
  874.           return(DM_NORMAL);
  875.       }
  876. !     for (elem = top, i = src; i-- > 1 && elem->q_forw; elem = elem->q_forw);
  877. !     if (i > 1) {
  878.           Put_message("You entered a number that is too high");
  879.           continue;
  880.       }
  881.       break;
  882.       }
  883. !     while (1) {
  884. !     bufp = Strsave("0");
  885. !     stat = GetValueFromUser("Enter number of filesystem it should follow (0 to make it first):", &bufp);
  886. !     dst = atoi(bufp);
  887. !     free(bufp);
  888. !     if (src == dst || src == dst + 1) {
  889. !         Put_message("That has no effect on the sorting order!");
  890. !         return(DM_NORMAL);
  891. !     }
  892. !     if (dst < 0) {
  893. !         Put_message("You must enter a non-negative number.");
  894. !         continue;
  895. !     }
  896. !     for (tmpelem = top, i = dst;
  897. !          i-- > 1 && tmpelem->q_forw;
  898. !          tmpelem = tmpelem->q_forw);
  899. !     if (i > 0) {
  900. !         Put_message("You entered a number that is too high");
  901. !         continue;
  902. !     }
  903. !     break;
  904.       }
  905.       args[2] = SortAfter(top, dst);
  906.       args[0] = argv[1];
  907. *** /tmp/,RCSt1017780    Wed Jun 13 15:39:57 1990
  908. --- clients/moira/pobox.c    Thu Jun  7 17:57:50 1990
  909. ***************
  910. *** 1,5 ****
  911.   #if (!defined(lint) && !defined(SABER))
  912. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v 1.15 90/04/25 12:39:49 mar Exp $";
  913.   #endif lint
  914.   
  915.   /*    This is the file pobox.c for the MOIRA Client, which allows a nieve
  916. --- 1,5 ----
  917.   #if (!defined(lint) && !defined(SABER))
  918. !   static char rcsid_module_c[] = "$Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v 1.16 90/06/07 17:57:37 mar Exp $";
  919.   #endif lint
  920.   
  921.   /*    This is the file pobox.c for the MOIRA Client, which allows a nieve
  922. ***************
  923. *** 11,17 ****
  924.    *
  925.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v $
  926.    *      $Author: mar $
  927. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v 1.15 90/04/25 12:39:49 mar Exp $
  928.    *    
  929.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  930.    *
  931. --- 11,17 ----
  932.    *
  933.    *      $Source: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v $
  934.    *      $Author: mar $
  935. !  *      $Header: /afs/athena.mit.edu/astaff/project/moiradev/src/clients/moira/RCS/pobox.c,v 1.16 90/06/07 17:57:37 mar Exp $
  936.    *    
  937.    *      Copyright 1988 by the Massachusetts Institute of Technology.
  938.    *
  939. ***************
  940. *** 49,54 ****
  941. --- 49,56 ----
  942.       sprintf(buf, "Address: %-10s Box: %-35s Type: %s", info[PO_NAME],
  943.           info[PO_BOX], info[PO_TYPE]);
  944.       Put_message(buf);
  945. +     sprintf(buf, MOD_FORMAT, info[4], info[3], info[5]);
  946. +     Put_message(buf);
  947.   }
  948.   
  949.   /*    Function Name: RealPrintPOMachines
  950. ***************
  951. *** 223,229 ****
  952.       default:
  953.           return(DM_NORMAL);    /* ^C hit. */
  954.       }
  955. !     
  956.       default:            /* ^C hit. */
  957.       type = "NONE";
  958.       break;
  959. --- 225,231 ----
  960.       default:
  961.           return(DM_NORMAL);    /* ^C hit. */
  962.       }
  963. !     break;
  964.       default:            /* ^C hit. */
  965.       type = "NONE";
  966.       break;
  967.